package com.itheima.abstract3; // package关键字：声明当前类所在的包，com.itheima.abstract3是包的完整路径，用于组织代码结构，避免类名冲突

public class Test { // public：访问修饰符，表示这个类可以被任何地方访问；class：关键字，用于定义类；Test：类名，通常作为测试类使用
    public static void main(String[] args) { // public：访问修饰符；static：静态修饰符，表示这个方法属于类而不是对象；void：返回值类型；main：方法名，是Java程序的入口方法；String[] args：参数列表，用于接收命令行参数
        // 目标：理解抽象类的使用场景之二：模板方法设计模式。 // 这是一个注释，说明这个程序的目的
        // 学生和老师都要写一篇作文：《我的爸爸》 // 注释解释了业务场景
        //         第一段是一样的：我爸爸是一个好人，我特别喜欢他，他对我很好，我来介绍一下： // 注释解释共享部分
        //         第二段是不一样：老师和学生各自写各自的。 // 注释解释变化部分
        //         第三段是一样的：我爸爸真好，你有这样的爸爸吗？ // 注释解释共享部分
        // 解决：抽出一个父类。父类中还抽取一个模板方法给子类直接用。 // 注释解释解决方案
        Student s = new Student(); // 创建Student类的对象，使用new关键字实例化；Student s：声明一个Student类型的变量s
        s.write(); // 调用Student对象的write方法，这个方法实际上是从父类People继承的模板方法，它会调用子类重写的writeMain方法
    } // main方法结束标记
} // Test类结束标记
